#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -v -f reinstall_assets.sh 
#endif

static  char data [] = 
#define      chk2_z	19
#define      chk2	((&data[1]))
	"\144\156\220\314\125\023\175\263\317\302\044\160\075\220\007\220"
	"\243\204\337\076"
#define      rlax_z	1
#define      rlax	((&data[20]))
	"\016"
#define      date_z	1
#define      date	((&data[21]))
	"\355"
#define      xecc_z	15
#define      xecc	((&data[25]))
	"\172\102\256\106\363\163\234\266\251\257\020\020\054\143\341\361"
	"\241\101\107\225"
#define      msg1_z	65
#define      msg1	((&data[49]))
	"\273\206\024\372\336\261\272\210\213\121\165\137\240\305\132\135"
	"\355\220\235\255\126\067\116\345\034\302\124\230\017\055\304\340"
	"\327\155\111\070\203\147\037\263\344\355\127\073\277\015\276\210"
	"\216\177\044\106\016\070\375\177\307\156\276\213\071\303\055\066"
	"\313\127\161\362\214\240\237\362\232\016\234\230"
#define      lsto_z	1
#define      lsto	((&data[118]))
	"\173"
#define      pswd_z	256
#define      pswd	((&data[183]))
	"\067\314\227\223\302\066\015\004\345\125\232\375\305\334\271\113"
	"\361\264\052\242\156\304\260\013\134\021\256\131\034\255\221\123"
	"\171\050\347\073\137\365\100\104\112\332\102\017\266\373\133\250"
	"\257\205\112\036\112\373\052\247\015\330\000\051\206\221\174\000"
	"\236\104\312\160\267\347\014\003\114\051\262\237\146\243\060\047"
	"\214\360\224\070\271\173\334\313\322\075\313\223\145\052\143\004"
	"\157\055\165\046\024\201\052\141\252\334\000\020\177\060\070\013"
	"\041\314\104\333\107\040\246\031\136\162\255\304\235\020\311\014"
	"\076\076\062\123\277\135\264\151\071\264\172\271\345\262\304\007"
	"\177\010\342\306\051\210\340\210\373\215\115\230\236\026\244\334"
	"\124\327\057\024\065\344\176\156\231\370\050\176\253\354\205\053"
	"\365\150\361\037\360\322\250\354\140\365\205\376\013\052\333\140"
	"\002\013\164\067\357\362\246\210\353\316\007\227\273\215\302\260"
	"\365\264\320\346\207\170\322\347\155\127\346\171\201\302\332\203"
	"\315\116\273\274\101\141\105\055\057\115\304\352\332\207\233\317"
	"\074\153\265\303\344\210\253\122\340\222\313\141\124\245\345\041"
	"\364\240\336\066\002\044\143\061\161\050\033\113\257\267\033\354"
	"\043\321\260\007\131\133\131\071\355\045\233\101\312\201\143\277"
	"\042\102\365\044\146\130\125\327\201\161\043\060\050\077\035\113"
	"\020\315\123\151\050\254\243\026\322\076\130\235\300\273\134\342"
	"\272\144\073\032\131\174\136\244\126\240\263\015\234\017"
#define      opts_z	1
#define      opts	((&data[453]))
	"\325"
#define      shll_z	10
#define      shll	((&data[455]))
	"\374\042\025\117\034\045\171\355\207\273\262\224\207"
#define      inlo_z	3
#define      inlo	((&data[467]))
	"\340\155\031"
#define      tst1_z	22
#define      tst1	((&data[475]))
	"\257\364\325\023\060\263\302\037\024\265\301\311\031\216\004\242"
	"\202\362\042\171\166\260\341\035\320\326\043"
#define      chk1_z	22
#define      chk1	((&data[499]))
	"\115\021\163\221\244\154\100\023\214\212\223\111\122\265\302\042"
	"\125\176\324\065\101\005\064\333\003\356\305\021"
#define      msg2_z	19
#define      msg2	((&data[529]))
	"\326\152\307\100\266\153\111\076\253\173\100\051\077\131\223\125"
	"\075\115\311\350\310\150\131\112\303\325"
#define      text_z	3282
#define      text	((&data[1209]))
	"\132\000\070\164\257\054\112\303\135\071\060\012\206\102\015\165"
	"\007\036\377\334\345\325\106\255\026\221\161\354\143\076\060\276"
	"\076\151\063\356\225\175\262\363\266\342\375\075\045\012\262\054"
	"\051\261\010\017\207\117\275\236\340\056\213\104\155\273\002\254"
	"\044\065\233\272\262\115\256\151\060\253\246\125\266\130\202\337"
	"\012\212\357\222\332\254\060\273\332\273\377\110\167\001\364\234"
	"\067\217\127\352\335\005\123\015\260\371\142\146\122\344\106\135"
	"\157\065\357\112\341\040\005\274\333\004\005\123\006\371\357\075"
	"\211\106\047\146\114\173\164\374\165\327\143\307\274\252\044\053"
	"\337\024\166\301\064\173\176\020\177\203\143\206\175\122\303\006"
	"\231\353\155\345\147\341\342\334\270\106\243\164\360\310\240\320"
	"\335\026\222\021\222\020\041\022\224\205\230\021\330\134\030\161"
	"\107\205\127\256\147\072\213\040\200\056\225\160\367\065\101\324"
	"\114\323\346\337\344\010\361\170\215\211\212\145\345\242\327\055"
	"\050\056\334\217\151\147\257\351\226\104\132\215\172\233\142\307"
	"\157\111\246\123\121\230\314\337\041\126\104\007\370\034\064\040"
	"\113\020\260\264\167\140\235\016\245\370\234\040\224\376\350\003"
	"\110\216\127\231\047\043\171\110\171\276\117\162\332\203\223\045"
	"\224\103\331\014\244\167\032\111\160\266\151\004\265\121\010\375"
	"\340\140\227\007\204\020\120\375\317\240\160\251\044\003\317\270"
	"\106\250\305\352\040\340\064\221\226\236\226\114\360\236\112\321"
	"\377\341\330\203\362\051\201\302\311\361\153\355\364\072\246\073"
	"\343\153\046\004\113\132\225\342\371\053\057\351\312\171\272\311"
	"\133\223\115\116\274\316\020\206\277\173\163\264\266\031\357\232"
	"\205\025\236\320\160\063\263\151\137\342\122\051\134\015\363\267"
	"\240\100\005\134\017\025\342\316\221\126\202\110\160\162\342\365"
	"\210\200\306\370\264\171\142\023\134\264\075\270\301\061\157\142"
	"\161\165\276\200\212\241\117\034\367\322\144\147\104\106\135\314"
	"\307\043\305\173\235\047\217\371\334\315\261\235\376\041\377\160"
	"\226\276\360\041\140\100\076\130\022\242\300\127\351\035\043\260"
	"\101\350\054\336\020\274\327\354\212\211\212\210\253\212\370\101"
	"\110\351\143\251\052\241\001\074\104\302\223\055\337\267\336\040"
	"\240\012\376\260\307\326\235\121\140\047\331\013\261\322\114\372"
	"\274\260\243\346\121\245\043\225\147\267\303\107\157\241\150\017"
	"\253\147\300\163\075\136\304\235\205\236\250\066\161\365\061\055"
	"\246\325\024\367\173\070\215\342\357\120\052\136\362\222\156\235"
	"\371\057\021\067\215\325\325\022\164\175\111\345\163\172\023\031"
	"\120\047\021\313\137\237\256\117\360\330\255\342\153\034\200\145"
	"\113\221\234\330\146\161\353\332\357\065\300\143\260\323\175\000"
	"\373\216\313\133\056\171\252\036\122\130\000\275\164\200\042\300"
	"\022\277\231\171\060\204\124\040\271\024\203\151\350\001\152\343"
	"\217\065\073\374\243\110\367\347\053\302\015\273\316\147\300\267"
	"\206\242\367\101\225\031\350\317\336\112\220\074\324\275\217\160"
	"\264\113\263\126\232\226\370\225\231\311\035\211\262\265\155\156"
	"\064\053\347\065\025\263\044\173\327\006\077\267\230\245\360\314"
	"\225\047\337\226\217\235\374\254\022\211\305\130\100\332\143\364"
	"\321\113\112\076\311\315\317\357\075\322\013\002\251\247\203\267"
	"\254\074\054\136\210\202\336\045\042\102\201\320\012\334\300\231"
	"\031\314\343\327\011\307\342\065\013\207\037\326\363\347\265\056"
	"\107\222\132\277\232\036\151\335\311\154\272\202\154\374\050\023"
	"\005\114\137\301\375\000\004\030\360\307\214\002\063\173\030\112"
	"\353\221\034\015\035\365\203\207\011\351\202\031\053\173\056\177"
	"\033\112\165\151\367\037\316\353\137\157\125\273\173\163\167\142"
	"\365\102\255\247\311\225\046\361\313\301\321\127\347\251\146\266"
	"\214\373\163\221\170\006\113\052\320\356\150\257\304\264\315\062"
	"\114\273\377\225\206\334\002\255\104\160\271\125\034\272\143\240"
	"\214\052\127\125\337\241\235\124\075\156\170\063\165\006\210\006"
	"\037\245\155\113\067\241\344\251\072\140\315\166\323\367\262\153"
	"\364\130\117\325\017\275\335\111\174\223\007\310\226\220\045\150"
	"\203\133\340\103\060\243\125\310\364\215\060\307\202\110\131\107"
	"\302\135\364\314\117\025\074\047\371\356\212\061\022\371\315\056"
	"\101\326\152\025\276\004\113\377\340\240\201\054\037\325\310\277"
	"\340\214\145\102\033\163\170\273\252\267\211\233\232\330\164\053"
	"\134\336\117\222\012\077\306\321\144\142\372\131\202\065\146\231"
	"\371\250\154\000\202\062\022\174\033\347\124\045\175\225\121\335"
	"\175\236\254\034\155\302\310\303\273\122\240\367\334\000\140\165"
	"\135\302\006\236\370\257\172\102\224\053\235\174\251\023\351\311"
	"\057\020\331\251\006\042\104\343\132\133\336\200\106\117\047\204"
	"\041\030\210\157\007\130\147\266\162\217\326\117\344\332\067\115"
	"\136\325\061\141\175\375\303\355\215\270\244\350\032\050\271\253"
	"\251\104\015\154\256\302\330\370\232\074\004\231\347\102\247\057"
	"\166\246\362\376\353\255\077\163\365\103\171\360\375\010\254\075"
	"\347\233\313\160\237\131\046\226\020\022\315\247\170\024\244\043"
	"\235\144\303\106\216\016\240\103\177\364\160\066\136\151\170\166"
	"\115\142\026\030\375\352\027\113\215\021\041\257\035\030\205\373"
	"\337\124\050\161\375\304\252\055\032\233\370\014\111\063\204\060"
	"\127\321\074\121\067\360\276\231\066\026\117\227\344\114\150\123"
	"\205\216\375\117\245\205\040\053\021\332\120\211\125\227\134\250"
	"\057\176\276\276\013\143\301\021\072\140\363\005\032\012\270\021"
	"\223\350\074\316\213\123\040\166\063\314\231\163\167\141\347\070"
	"\333\033\004\264\222\373\213\170\032\213\176\337\361\175\002\244"
	"\263\163\165\142\366\066\272\125\150\236\340\132\073\146\375\055"
	"\002\325\261\311\262\213\123\051\361\072\010\157\332\264\125\341"
	"\336\127\251\376\346\002\115\146\057\235\307\127\076\210\043\361"
	"\056\372\126\172\227\312\330\131\236\117\274\311\071\375\217\065"
	"\372\204\300\302\103\265\202\342\033\145\110\157\237\353\123\133"
	"\263\322\371\230\351\161\135\260\316\072\166\021\276\053\270\017"
	"\347\025\017\116\243\360\316\076\277\221\166\340\371\254\067\051"
	"\126\341\374\034\232\303\031\000\160\163\067\162\371\025\327\322"
	"\043\046\376\070\361\160\174\261\016\375\213\117\104\126\271\346"
	"\166\010\373\363\352\203\113\003\105\066\330\314\316\362\054\223"
	"\306\114\216\153\154\372\004\317\141\302\052\244\244\201\061\163"
	"\102\357\051\042\107\261\044\271\163\157\100\026\053\207\144\251"
	"\220\112\005\277\260\134\345\200\140\364\225\352\035\031\017\300"
	"\200\063\150\152\272\231\022\354\026\015\073\304\351\264\352\376"
	"\051\120\077\352\225\004\122\373\247\367\240\166\007\035\172\236"
	"\001\243\121\151\202\330\132\150\201\017\275\334\112\127\250\247"
	"\263\376\175\022\311\073\144\357\123\071\310\073\230\174\004\351"
	"\207\354\275\100\133\124\310\072\304\124\304\247\363\335\033\076"
	"\233\247\045\245\246\123\363\012\310\147\373\072\021\211\131\377"
	"\206\164\061\016\142\044\114\073\205\022\235\206\055\341\127\101"
	"\216\051\240\062\064\350\160\250\114\126\213\310\240\010\020\242"
	"\171\305\317\037\152\303\343\337\334\334\356\131\263\377\116\251"
	"\336\224\254\262\271\130\202\010\227\365\253\323\172\142\276\074"
	"\171\100\343\316\054\057\270\026\102\305\302\220\006\266\045\267"
	"\111\333\043\136\302\127\067\124\071\051\202\252\371\113\110\220"
	"\023\305\156\354\363\031\316\266\174\064\347\011\161\056\111\103"
	"\210\030\261\135\375\324\121\100\170\141\260\326\226\020\055\234"
	"\150\377\203\357\014\310\132\146\001\364\076\324\263\343\305\042"
	"\330\123\355\367\103\245\131\141\163\244\123\170\124\233\037\042"
	"\362\040\065\333\352\050\322\301\024\201\322\315\334\035\166\251"
	"\256\207\323\000\111\132\122\005\042\171\117\174\066\046\355\227"
	"\377\371\054\242\333\142\111\154\314\211\124\176\142\024\006\164"
	"\160\060\315\061\215\340\127\122\036\221\032\036\112\327\357\147"
	"\364\142\172\055\055\334\240\255\232\070\345\122\130\172\047\171"
	"\352\254\360\347\215\357\307\000\302\175\016\115\126\011\161\220"
	"\005\312\125\011\221\065\155\213\331\115\347\147\047\251\267\343"
	"\242\100\211\127\162\052\130\306\330\201\227\373\041\261\006\151"
	"\101\171\110\120\171\261\123\044\350\003\037\303\340\264\345\262"
	"\004\270\343\344\257\346\077\355\055\324\250\241\255\346\335\315"
	"\230\165\163\051\045\041\043\105\156\314\222\127\011\155\052\303"
	"\254\023\302\211\243\262\172\037\073\124\121\162\064\125\125\136"
	"\377\355\273\356\136\331\261\312\304\173\315\152\054\236\155\360"
	"\024\117\364\323\047\366\341\131\125\330\147\172\010\124\306\002"
	"\117\126\000\235\367\035\055\052\065\362\121\261\242\037\065\325"
	"\265\152\241\055\105\172\142\124\276\107\337\111\067\255\260\153"
	"\227\335\230\173\267\263\342\001\275\076\123\166\216\375\022\130"
	"\143\101\012\210\167\146\121\202\234\143\117\216\367\145\222\164"
	"\217\214\212\260\211\223\265\003\315\166\351\142\117\242\374\174"
	"\075\120\204\040\306\302\072\232\066\150\016\223\241\125\037\041"
	"\032\204\031\075\122\337\036\006\100\224\346\052\057\240\300\333"
	"\315\341\267\225\043\256\354\046\021\133\346\277\147\135\330\007"
	"\033\167\204\220\163\122\057\361\070\107\007\266\151\234\074\060"
	"\275\033\352\157\060\001\216\142\150\052\326\137\331\340\235\276"
	"\353\145\011\257\156\002\322\147\207\001\334\037\001\267\345\076"
	"\156\334\141\254\012\013\266\104\036\340\371\145\232\254\275\001"
	"\316\163\051\011\137\251\261\334\363\040\156\347\156\264\117\030"
	"\102\147\112\124\062\362\106\337\312\026\021\043\260\017\377\214"
	"\365\343\101\061\063\335\163\136\365\061\245\130\244\004\245\007"
	"\163\073\246\075\053\231\146\310\363\151\360\024\355\141\301\013"
	"\217\256\077\324\306\270\316\233\245\327\040\350\175\076\037\347"
	"\370\074\336\215\362\154\216\353\111\034\125\062\014\321\044\232"
	"\014\163\154\007\143\245\130\233\071\234\144\212\312\104\304\221"
	"\056\010\173\004\262\301\070\271\132\335\332\070\257\334\263\013"
	"\313\266\337\353\211\270\112\104\135\362\321\016\341\211\371\140"
	"\057\332\152\377\146\020\170\332\131\216\246\067\105\250\134\335"
	"\315\263\142\315\137\217\201\167\002\117\124\043\276\146\160\136"
	"\266\202\307\243\175\310\215\046\346\241\252\266\074\160\277\213"
	"\131\351\206\032\126\071\201\330\306\145\375\330\023\345\135\123"
	"\374\352\231\032\041\374\236\101\270\266\005\357\147\261\166\357"
	"\212\372\375\261\205\021\150\025\061\157\353\244\220\265\212\064"
	"\152\276\310\277\070\260\266\054\131\045\142\347\351\170\125\271"
	"\262\344\162\244\255\233\063\100\140\147\340\172\141\056\351\104"
	"\004\046\371\255\141\370\074\161\115\175\002\023\105\216\301\060"
	"\111\253\265\066\170\166\050\121\220\241\243\376\201\064\346\064"
	"\245\112\136\300\163\076\152\131\211\237\142\332\317\203\255\077"
	"\207\006\221\254\215\267\333\323\024\020\333\253\257\144\167\000"
	"\034\372\030\344\120\120\031\225\104\145\163\114\104\160\113\277"
	"\363\171\227\042\250\356\075\204\252\336\063\372\252\017\057\352"
	"\222\371\164\266\066\006\165\131\322\065\301\363\140\324\216\011"
	"\101\222\060\324\175\105\012\236\320\250\266\103\052\355\232\237"
	"\106\170\315\027\020\303\311\343\235\001\275\136\102\306\343\220"
	"\155\006\350\270\325\261\050\322\015\042\074\020\223\100\332\362"
	"\206\323\356\364\156\307\132\005\125\361\124\226\246\110\226\275"
	"\112\045\276\304\273\246\172\355\360\060\300\062\051\315\063\145"
	"\153\012\046\063\010\343\355\132\005\263\104\122\027\374\333\001"
	"\155\345\214\167\141\301\331\246\274\325\333\317\022\312\123\132"
	"\157\307\257\053\105\056\312\224\376\345\301\311\270\355\205\025"
	"\270\230\004\226\206\211\312\277\160\264\063\065\025\243\313\277"
	"\154\333\245\041\361\312\377\006\220\064\137\201\047\260\315\371"
	"\360\243\364\304\164\251\127\031\167\130\271\341\077\174\033\077"
	"\160\025\164\146\160\175\365\221\353\353\304\205\020\251\255\123"
	"\066\331\153\144\307\243\322\007\130\017\367\101\132\123\024\031"
	"\352\240\276\215\032\067\224\232\307\353\240\041\022\350\252\111"
	"\365\066\247\107\372\370\006\037\143\170\171\216\320\243\251\125"
	"\156\376\120\310\117\026\170\341\053\014\063\210\044\204\127\232"
	"\046\140\306\137\074\165\361\213\066\066\231\353\362\072\135\152"
	"\305\145\014\246\216\212\326\052\251\214\230\165\072\347\365\070"
	"\375\115\325\351\176\257\023\135\003\232\321\203\147\154\060\147"
	"\005\233\161\023\365\136\264\266\173\334\313\261\340\116\173\255"
	"\250\030\260\025\277\177\105\311\244\241\064\245\226\145\351\046"
	"\303\001\216\006\021\362\154\126\120\313\063\053\041\205\131\024"
	"\274\326\056\060\363\126\173\110\315\011\125\176\347\361\324\041"
	"\242\233\152\262\342\045\306\166\033\101\306\347\320\015\141\207"
	"\137\346\115\256\336\024\054\060\020\305\225\323\370\267\332\237"
	"\246\123\254\252\352\051\214\325\227\161\307\135\061\035\232\050"
	"\200\170\017\330\030\062\133\011\356\315\026\205\261\172\176\351"
	"\375\354\027\063\122\024\266\354\116\221\122\342\230\324\246\162"
	"\140\003\165\043\357\333\241\007\273\314\211\072\305\221\163\047"
	"\122\152\230\137\120\144\212\370\300\027\043\025\373\373\023\226"
	"\247\344\216\176\226\003\205\017\262\302\066\336\234\172\227\012"
	"\157\251\333\052\115\255\340\151\227\006\304\114\230\177\340\145"
	"\150\303\157\005\265\167\007\356\001\001\001\071\052\277\240\106"
	"\264\102\046\244\074\257\052\135\346\125\001\166\005\037\141\332"
	"\056\257\024\253\051\036\266\166\247\231\032\067\250\170\105\161"
	"\331\120\056\032\024\216\027\127\210\144\204\177\317\235\264\276"
	"\233\266\172\104\150\373\226\172\274\100\100\123\313\045\121\153"
	"\272\363\010\152\004\370\233\123\065\341\144\142\266\345\257\271"
	"\013\130\221\162\241\012\343\172\274\207\002\113\101\336\013\244"
	"\374\165\077\023\055\132\235\115\256\111\333\127\120\066\335\122"
	"\227\063\037\255\105\323\203\141\157\371\325\350\050\216\063\271"
	"\154\306\055\256\032\247\124\260\365\274\066\010\007\015\233\257"
	"\201\240\253\100\362\206\171\103\074\373\143\312\371\010\065\357"
	"\164\323\124\112\160\025\300\011\370\332\245\045\127\001\142\240"
	"\060\177\055\162\174\036\231\320\325\312\064\115\072\004\076\146"
	"\003\213\035\336\350\154\217\064\025\053\055\077\202\016\163\246"
	"\115\121\123\351\306\323\124\261\373\303\176\262\051\360\073\232"
	"\274\006\057\277\263\045\177\224\034\031\055\244\303\276\075\373"
	"\263\232\034\064\215\306\010\047\244\050\056\116\020\153\004\010"
	"\115\113\056\143\323\005\106\323\132\210\226\261\036\017\255\147"
	"\102\051\047\142\103\075\044\072\201\047\143\267\257\042\156\021"
	"\163\147\014\150\220\352\351\132\251\220\161\274\033\231\321\113"
	"\157\042\226\131\052\350\011\121\113\115\207\244\256\271\046\261"
	"\126\304\364\271\355\031\171\266\053\204\255\262\321\202\010\140"
	"\145\112\175\053\062\310\366\352\260\101\175\045\250\136\335\157"
	"\313\227\303\227\370\352\366\101\276\205\377\331\305\075\314\002"
	"\315\213\025\326\150\220\364\143\356\216\043\055\104\077\227\072"
	"\305\145\352\142\223\253\225\315\264\134\161\123\275\074\074\030"
	"\223\107\063\275\370\375\013\360\373\034\304\320\050\205\200\120"
	"\360\041\021\362\110\126\004\120\353\241\155\054\176\205\217\125"
	"\216\151\266\044\112\130\340\263\235\232\060\106\162\017\255\206"
	"\277\303\317\374\063\027\256\207\142\265\133\141\131\227\217\336"
	"\205\256\131\273\026\167\367\070\024\154\314\013\327\350\262\077"
	"\157\212\067\073\226\223\105\156\043\022\146\332\367\273\213\323"
	"\033\360\132\241\034\002\210\267\375\320\322\256\140\160\367\264"
	"\216\256\171\202\230\263\076\012\165\146\156\005\146\322\315\152"
	"\300\315\304\203\024\033\044\212\062\234\114\142\221\234\332\011"
	"\055\017\230\166\300\120\014\164\064\304\366\360\102\174\176\132"
	"\131\107\214\360\137\025\244\323\216\071\035\307\343\171\277\163"
	"\347\051\235\057\072\116\323\057\301\052\012\255\314\350\100\274"
	"\046\154\374\306\021\052\160\336\334\240\355\053\247\300\214\213"
	"\300\260\215\321\241\076\236\374\335\061\271\145\330\144\314\031"
	"\264\034\254\063\036\017\077\303\356\374\062\164\047\032\247\003"
	"\376\030\227\017\223\155\104\240\351\201\061\073\327\236\306\205"
	"\262\010\113\371\061\245\125\361\120\217\340\000\321\154\222\254"
	"\024\020\355\023\210\050\066\104\115\041\012\135\004\002\230\150"
	"\332\060\200\104\010\125\135\345\205\164\253\116\353\341\307\112"
	"\210\121\240\034\077\252\315\323\145\061\206\234\210\255\140\062"
	"\203\206\023\346\365\163\327\226\207\142\152\377\174\032\024\153"
	"\206\255\111\022\376\353\244\302\244\074\107\332\354\362\040\002"
	"\167\156\266\352\056\264\176\011\143\217\324\007\151\122\373\017"
	"\337\261\136\052\157\142\060\051\206\374\002\143\153\333\214\264"
	"\203\343\217\365\337\044\330\001\174\373\272\200\025\344\144\253"
	"\236\122\240\021\001\041\122\320\074\073\303\172\057\167\331\107"
	"\251\361\375\143\067\062\345\207\345\131\073\326\060\060\265\241"
	"\006\035\316\224\174\277\070\064\115\300\313\064\106\050\077\225"
	"\205\314\215\076\076\275\257\351\334\002\101\334\277\266\135\342"
	"\166\157\241\017\350\322\224\074\363\116\121\167\267\071\170\041"
	"\034\010\127\133\306\007\105\242\011\206\177\310\075\334\253\264"
	"\114\115\304\065\040\130\161\023\246\303\212\136\374\003\177\030"
	"\013\327\164\321\336\271\164\347\100\363\260\175\320\133\062\034"
	"\251\366\121\311\116\303\335\365\206\150\123\203\153\323\234\167"
	"\252\020\111\210\312\275\160\012\261\040\210\201\174\272\236\045"
	"\260\360\357\377\264\314\364\073\064\107\276\240\032\132\027\305"
	"\153\141\115\065\036\275\100\320\336\310\121\132\203\360\177\064"
	"\340\157\063\224\073\050\317\160\160\216\020\213\350\050\120\123"
	"\211\236\210\250\134\310\170\072\221\312\224\024\272\024\111\233"
	"\203\174\060\277\245\000\057\025\216\077\240\166\150\361\312\361"
	"\217\122\231\353\033\021\045\255\334\272\301\226\317\012\061\122"
	"\207\142\022\054\142\101\102\360\201\343\146\351\324"
#define      tst2_z	19
#define      tst2	((&data[4712]))
	"\203\164\117\237\107\014\121\133\340\010\036\331\070\345\060\203"
	"\261\244\115\335\334\026\320\206"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
